package com.zp.self.module.工具.时间转换;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import org.springframework.format.annotation.DateTimeFormat;

import java.io.IOException;
import java.time.LocalDateTime;
import java.time.ZoneOffset;

/**
 * @author ：byH
 * @date ：Created 2022/3/26 8:45
 * @description：SpringBoot中应用LocalDateTime
 *
 * 参考：https://www.cnblogs.com/huanshilang/p/12013386.html
 */

//1.将LocalDateTime字段以时间戳的方式返回给前端 添加日期转化类
class LocalDateTimeConverter extends JsonSerializer<LocalDateTime> {
    @Override
    public void serialize(LocalDateTime value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
        gen.writeNumber(value.toInstant(ZoneOffset.of("+8")).toEpochMilli());
    }
}

public class   LocalDateTime_SpringBoot {

    //2.并在LocalDateTime字段上添加@JsonSerialize(using = LocalDateTimeConverter.class)注解，如下：
    @JsonSerialize(using = LocalDateTimeConverter.class)
    protected LocalDateTime gmtModified;

    //3.将LocalDateTime字段以指定格式化日期的方式返回给前端 在LocalDateTime字段上添加
    // @JsonFormat(shape=JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss")注解即可，如下：
    @JsonFormat(shape= JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss")
    protected LocalDateTime gmtModified2;

    //4.　对前端传入的日期进行格式化 在LocalDateTime字段上添加@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")注解即可，如下：
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    protected LocalDateTime gmtModified3;
}

